如何用穩定速度移動一個物體?
1.速度要穩定。
2.運動控制方法清晰穩定。
3.不能發生穿牆事件。
4.物理碰撞效果要穩定正常運作。
目前為止,「body.applyLinearImpulse」和「body.setTransform」都不合格。
「body.applyLinearImpulse」的速度不穩定,而且會發生「停不下來」的情況。
「body.setTransform」會導致穿牆,停下來後也會永久失去正常物理碰撞的能力。
正解是賦予「body.linearVelocity」一組Vector2。
問題是...
「body.linearVelocity」在程式庫中似乎是以getter/setter的編寫形式存在,而Flutter編譯後會將它轉成一組「參數」。
所以實際上使用Flame/Forge2D套件時,使用這組參數並不需要「a = body.getLinearVelocity」或「body.setLinearVelocity(a)」這樣的方式,而是單純的「a = body.linearVelocity」或「body.linearVelocity = a」即可!
傳統需要使用setter(setValue)的地方,會變成「apply(applyValue)」。
這似乎是種趨勢,而這趨勢已經主流到會開始看到有人寫文說「不要再自己的程式碼中寫getter/setter」,真是時代的眼淚啊!
今天是第二十九天,整個系列即將結束,進度遠遠沒達到一開始預期的要求。
但是也收穫了很多原本沒預期到會有的東西。
對了!
這系列的文比較像是「日記」「開發實際過程實錄」,而不是大家常見或喜樂閱讀的「百科式教學文」。
我希望寫作時的風格能夠輕鬆,能夠講講一些讓讀者讀過去沒壓力、但卻能留下深刻且有用的思維在腦海中的內容。
因為我是Google產品的使用者/開發者,所以我一向對Google在編寫線上API與教程時的不負責任態度很感冒。
Google永遠預設兩個條件:
1.我只寫Google自己內部開發者在開發Google自家產品時需要用到的技術就好,要做高端變化...我才不鳥你。
2.你們應該(必須)都經驗豐富了,所以不要期望我講解得太基本好懂。
既然Google不願意給的東西,那就靠自己去獲得、去分享。
這是我今年參加鐵人賽時給自己定下的一個目標。
希望這整個系列的文章可以持續完善,已達到這個目標,希望。
(這應該在開頭第一篇文章講的。)